#事件循环+回调（驱动生成器）+epoll(IO多路复用)
#asyncio是python用于解决异步io编程的一整套解决方案
#tornado、gevent、twisted（scrapy， django channels）
#torando(实现web服务器)， django+flask(uwsgi, gunicorn+nginx)
#tornado可以直接部署， nginx+tornado

# 使用asyncio
# 获取协程的返回值
import asyncio
import time
from functools import partial
async def get_html(url):
    print("start get url")
    await asyncio.sleep(2)
    return "bobby"

def callback(url, future):
    print("传入的参数=", url)
    print("send email to bobby")

if __name__ == '__main__':
    start_time = time.time()

    loop = asyncio.get_event_loop()

    task = loop.create_task(get_html("http://www.imooc.com"))
    task.add_done_callback(partial(callback,"www.baidu.com"))
    loop.run_until_complete(task)
    print(task.result())

    print(time.time() - start_time)
